//=============================
// クラスを生成
//=============================
App.ProjectEdit = function(){
 // スーパークラスコンストラクタ呼び出し
 App.ProjectEdit.superclass.constructor.call(this);
} ;
		// App.Pageを継承
		Ext.extend(App.ProjectEdit, App.Page, {
			list_per_page:100,									 // 一覧リスト１ページ件数
			tabindexies:[
				'project_project_name',
				'project_project_cd',
				'project_end_user_name',
				'project_start_date',
				'project_delivery_date',
			],
			initparam: null,
			dataparam: null,
			emailCount :1,
		 /*==================================================
		  * 関数名：onDocLoaded
		  * 概　要：ドキュメントロードイベントハンドラ
		  * 引　数：なし
		  * 戻り値：なし
		  ==================================================*/
		 onDocLoaded : function(eventObject, target){
		  //-----------------------------
		  // スーパークラスの処理を実行
		  //-----------------------------
		  App.ProjectEdit.superclass.onDocLoaded.call(this, eventObject, target);
	
			// 保存ボタンクリックイベント設定
			elm = Ext.get('btn_add_project') ;
			if (elm) {
				elm.on('click', this.onSave, this, true) ;
			}
	
			// 変更ボタンクリックイベント設定
			elm = Ext.get('btn_edit_project') ;
			if (elm) {
				elm.on('click', this.onSave, this, true) ;
			}
		 },
    
	    /*
	     * 関数名：onSave
	     * 概　要：保存ボタンクリックイベント。
	     *         フォームの内容をAjax経由で登録要求する。
	     * 引　数：なし
	     * 戻り値：なし
	     */
	    onSave : function(){
	        // 入力チェック
	        if( !this.fncInputCheck() ) return false ;

			form = document.edit_project_form;
			form.submit();

			return false ;
	    },

	    /*
	     * 関数名：fncInputCheck
	     * 概　要：入力チェックを実施する。
	     * 引　数：なし
	     * 戻り値：boolean      (true:チェックOK、false:チェックNG)
	     */
	    fncInputCheck : function(){
			// プロジェクト名
			var project_name = Ext.get('project_project_name').dom.value ;
			if (project_name == "") {
				alert('プロジェクト名は必須入力です。');
				return false;
			}
			// プロジェクトコード
			var project_cd = Ext.get('project_project_cd').dom.value ;
			if (project_cd == "") {
				alert('プロジェクトコードは必須入力です。');
				return false;
			}
			// 開始日
	        var start_date = Ext.get('project_start_date').dom.value ;
			if (start_date == '') {
				alert('開始日は必須入力です。');
				return false;
			}
			// 日付書式チェック
			var start_date_valid = this.fncValidDate(start_date);
			if (!start_date_valid) {
				alert('開始日が正しくありません。');
				return false;
			}
			// 終了日
	        var delivery_date = Ext.get('project_delivery_date').dom.value ;
			if (delivery_date == '') {
				alert('終了日は必須入力です。');
				return false;
			}
			// 日付書式チェック
			var delivery_date_valid = this.fncValidDate(delivery_date);
			if (!delivery_date_valid) {
				alert('終了日が正しくありません。');
				return false;
			}
		
			// 期間前後チェック
			var between_valid = this.fncBackToForth(start_date, delivery_date);
			if (!between_valid) {
				alert('期間が正しくありません。');
				return false;
			}

	        return true ;
	    },
    

		/*==================================================
		 * 関数名：fncCreateDialog
		 * 概　要：コンテナエレメントに対して、ダイアログオブジェクトを生成する
		 *			 ：（初期表示時に呼び出される）
		 * 引　数：なし
		 * 戻り値：なし
		 ==================================================*/
		fncCreateDialog : function(initparam){
				//-----------------------------
				// スーパークラスの処理を実行
				//-----------------------------
				App.ProjectEdit.superclass.fncCreateDialog.call(this);

				this.fncSetInitParameter( initparam ) ;
			
				this.fncInitialize();

				// ページレンダリング
				this.fncRender() ;
				// 各イベント設定
				this.fncSetEvent() ;

		},	
		 /*==================================================
		  * 関数名：fncRender
		  * 概　要：ページをレンダリングする
		  * 引　数：なし
		  * 戻り値：なし
		  ==================================================*/
		 fncRender : function(){
		 },
		
		 /*==================================================
		  * 関数名：fncSetEvent
		  * 概　要：当該ページのイベントハンドラを設定する
		  * 引　数：なし
		  * 戻り値：なし
		  ==================================================*/
		 fncSetEvent : function(){

		 },
		 /*==================================================
		  * 関数名：fncSetInitParameter
		  * 概　要：初期化パラメータをセットを設定する
		  * 引　数：なし
		  * 戻り値：なし
		  ==================================================*/		
			fncSetInitParameter: function( initparam )
			{
				if( initparam != null){
					this.initparam = this.initparam.merge(initparam) ;
				}

				// initparamの内容で、メンバー値を初期化
				var keys = this.initparam.keys().toString() ;
				if( keys != "" ){
					var keysarr = keys.split(',') ;
					for( i in keysarr ){
						this[keysarr[i]] = this.initparam[keysarr[i]] ;
					}
				}
			},
			
		 /*==================================================
		  * 関数名：fncInitialize
		  * 概　要：ダイアログ初期化処理を行う（初期化時に呼び出される）
		  * 引　数：なし
		  * 戻り値：なし
		  ==================================================*/		
			fncInitialize: function(){
				// サブクラスにて必要な際に実装
			},
		
			onDocumentLoad : function(){

			},


			onEmailFieldAdd : function(area_id){

				this.emailCount++ ;
				var field = '<div id="email_pro_inp_'+ email_pro_inp_field_count +'">' +
							'<input id="users_' + email_pro_inp_field_count + '" maxlength="256" name="users[]" size="256" style="width:300px;ime-mode:disabled;margin-bottom:2px;" type="text" />' +
							'&nbsp;<a href="#" onclick="App.Page.thispage.onEmailFieldRemove(\'email_pro_inp_' + email_pro_inp_field_count + '\'); return false;"><span >削除</span>&nbsp;</a>' +
							'</div>' ;
					// アドレス追加用テキストフィールドの追加		
          var obj = Ext.get(area_id);
          obj.insertHtml('beforeEnd', field);

			    var cmp = new Ext.form.TextField({id:'users_'+ email_pro_inp_field_count});
			    cmp.applyToMarkup('users_'+ email_pro_inp_field_count) ;
			   
			    email_pro_inp_field_count += 1;

			},
		
			onEmailFieldRemove : function(span_id){
				//アドレス追加テキストフィールドの削除
				var elm = Ext.get(span_id) ;
		    elm.remove();
			}

});

	//=============================
	// 現在のページオブジェクトとして生成
	//=============================
	App.Page.thispage = new App.ProjectEdit() ;

